// 基本数据类型
/*
	1.String：字符串
	2.Number：数值
	3.Boolean：布尔类型 true和false
	4.undefined: 未定义的类型
	5.null：空值 
	6.BigInt：精确度高的整型 JavaScript Number 的运算符也可用于 BigInt
		注意：
		（1）不允许在 BigInt 和 Number 之间进行算术运算
		（2）BigInt 不能有小数
	7.Symbol：唯一不可以变的数据类型
	8.function：函数类型
*/

// 1.数值类型 注意：浮点值的运算是不准的
let num = 1, num1 = 1.1, num2 = 2.11111, num3 = -1;
console.log(num, num1, num2, num3);

// NaN- Not a Number 好代码？1.通俗易懂 2.所需功能完整 3.无bug（很难实现的）
console.log(num * 'a');
console.log(isNaN(num * 'a'));
console.log(typeof (num * 'a'));
// 在JS中 除0 不会报错
console.log("2/0", 2 / 0); // Infinity
console.log(typeof (2 / 0));

// 2.字符串类型 
// (1)如果发生嵌套 要么外双内单 要么外单内双，总之不能用一个
// (2) JavaScript 会尝试将字符串转换为数字
let str = "1", str1 = '2.1';

// 转义字符
let str2 = "\\ 反斜杠";
console.log(str2);

// 进行数值运算
console.log(str1 * num1);


// 注意：JavaScript 拥有动态类型
num = "1";
console.log(typeof num);

// 3.undefined和null值的区别
console.log(typeof undefined)              
console.log(typeof null)  // object               
console.log(null === undefined)            
console.log(null == undefined)


// 数组


// 对象： JavaScript 对象无法进行比较。


// 我们可以通过typeof 来检查数据的类型
/*
	在 JavaScript 中有 5 种不同的可以包含值的数据类型：
	1.string
	2.number
	3.boolean
	4.object
	5.function
	有 6 种类型的对象：
	Object
	Date
	Array
	String
	Number
	Boolean
	以及 2 种不能包含值的数据类型：
	null
	undefined let a; 

	注意：
		NaN的数据类型是数字
		数组的数据类型是对象
		日期的数据类型是对象
		null 的数据类型是 object
		未定义变量的数据类型为 undefined 
		未赋值的变量的数据类型也是 undefined 

	空值与 undefined 无关。
	空字符串既有合法值又有类型。

*/







